feat: hybrid search implementation#82
Open
barbara-celi wants to merge 26 commits into
Open
Conversation
This commit introduces a new hybrid search adapter for the `@vtexdocs/components` package, allowing integration with the Help Center's API while maintaining backward compatibility with Algolia. Key changes include the addition of a new `HybridSearchConfig` interface, updates to the `search-config.ts` file to support hybrid search, and modifications to the `SearchConfig` function to handle both Algolia and hybrid configurations. The implementation aims for minimal code changes and reuses existing components.
This update modifies the request selection logic in the `search-config.ts` file to prioritize requests with a non-empty query. If no such request is found, it defaults to the first request in the array. This change enhances the hybrid search functionality by ensuring more relevant queries are processed.
4 tasks
4 tasks
…tion This commit introduces a new utility function, `stripMarkdownForSnippet`, to remove Markdown syntax from text snippets, enhancing the readability of search results. Additionally, the `hitsPerPage` configuration is now dynamically set from the search configuration, improving pagination handling in the search results component.
- Enhanced stripMarkdownForSnippet to handle images, code blocks, blockquotes - Fixed regex patterns for better markdown syntax removal - Ensures search results display clean plain text without markdown formatting Co-authored-by: Cursor <cursoragent@cursor.com>
- Add special handling for tracks URLs to use only last segment - Fix URL pattern: /pt/docs/tracks/modulos-da-vtex-i instead of full path - Improve snippet handling to remove mid-word truncation - Strip incomplete words at start of truncated snippets Co-authored-by: Cursor <cursoragent@cursor.com>
- Added special handling for tutorial URLs to use only the last segment - Improved URL pattern for special doctypes (faq, known-issues, troubleshooting, announcements) to return only the slug - Updated comments for clarity on URL construction logic
- Updated URL construction logic to handle multiple special document types (tracks, tutorials, faq, known-issues, troubleshooting, announcements) using a unified approach. - Simplified the URL pattern to return only the slug for these document types. - Removed redundant conditions and improved code clarity with updated comments.
- Updated URL construction logic to differentiate between document types (tracks, tutorials, faq, known-issues, troubleshooting, announcements). - Implemented specific handling for tracks and tutorials to retain "docs" in the URL, while removing it for other types. - Enhanced comments for clarity on the URL patterns and their respective handling.
…ration - Added specific handling for 'faq', 'troubleshooting', 'announcements', and 'known-issues' document types to return only the slug in the URL. - Enhanced comments to clarify the URL patterns and their handling logic. - Ensured consistent URL construction for localized paths.
# Conflicts: # dist/index.css.map # dist/index.mjs.map
…electors Adds data-testid, data-filter, and data-active attributes to SearchFilterTab and SearchFilterTabBar so Cypress tests in vtexdocs/helpcenter can select the tab bar, individual tabs, and count badges without fragile DOM traversal.
… tokens and dangling syntax
…onents into feat/hybrid-search
Brings in TroubleshootingCard, ListingFilter, and related shared-component exports (v6.1.0/v6.1.1) so the helpcenter EDU-17906 branch can build against this version without missing-export TypeScript errors.
Replace the single-query facet bucketing with a parallel per-doctype plus unfiltered "All" fan-out through the search proxy, deriving each tab count from its own result set (exact up to 100, then "99+"). Zero-count tabs are disabled, a failed type shows no badge but stays clickable, and counts stay independent of pagination. Autocomplete is unchanged.
Replace the per-doctype count fan-out with a single request to the search counts endpoint, mapping canonical doctypes to portal tab ids and using the reported total for the "All" tab. When the counts request fails, tabs render without badges instead of falling back to hit counts. Deepen a selected doctype's result list on scroll by fetching up to the upstream cap for that doctype, and raise the tab-count display cap to show large totals as "999+".
Drop fenced and mermaid block contents (including truncated fences) and collapse stray horizontal-rule and table-separator symbol runs so raw markdown never leaks into snippets. Clamp the result-card and autocomplete snippet boxes with overflow-wrap and line clamping to keep long tokens from overflowing.
Re-running a search now resets pagination and remounts the hit list so a new query never shows stale results from the previous search.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
This PR adds hybrid search backend support to
@vtexdocs/componentsas an alternative to Algolia, enabling both Help Center and Dev Portal to use the new VTEX Docs Hybrid Search API.Changes:
SearchConfigwith new backend option: { backend: 'hybrid', hybrid: {...} }InstantSearchqueries to/api/searchcalls and transforms responses to Algolia-compatible format.HybridSearchConfigandSearchBackendConfig.Related:
Types of changes